package com.wzdigit.wms.basic.client.response.transfer;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.wzdigit.wms.basic.converter.gdn.GdnDtlStatusConverter;
import com.wzdigit.wms.basic.converter.gdn.GdnHeaderSaleTypeConverter;
import com.wzdigit.wms.basic.converter.gdn.GdnHeaderStatusConverter;
import com.wzdigit.wms.basic.converter.gdn.GdnTypeConverter;

import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 出库报表-主档+明细
 * @author Administrator
 *
 */
@Data
@HeadRowHeight(value = 20)
@ColumnWidth(value = 18)
@ExcelIgnoreUnannotated
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler", "fieldHandler" }, ignoreUnknown = false)
public class GdnHeaderAndDtlReportResponse implements Serializable {

	private static final long serialVersionUID = 219465639151242934L;

	/**
     * 表头ID
     */
    @ApiModelProperty("表头ID")
	private Integer gdnHeaderId;
	
	/**
     * 单据号
     */
    @ApiModelProperty("单据号")
    @ExcelProperty(value = "单据号")
    private String gdnNo;

    /**
     * 单据类型
     * 对应的枚举：GdnTypeEnum
     */
    @ApiModelProperty("单据类型")
    @ExcelProperty(value = "单据类型", converter = GdnTypeConverter.class)
    private String gdnType;

    /**
     * 移动类型
     */
    @ApiModelProperty("移动类型")
    @ExcelProperty(value = "移动类型")
    private String erpMoveType;

    /**
     * 单据状态
     * 对应的枚举：GdnHeaderStatusEnum
     */
    @ApiModelProperty("单据状态")
    @ExcelProperty(value = "单据状态", converter = GdnHeaderStatusConverter.class)
    private Integer status;

    /**
     * 项数
     */
    @ApiModelProperty("项数")
    @ExcelProperty(value = "项数")
    private String itemSize;

    /**
     * 出库数量
     */
    @ApiModelProperty("出库数量")
	@ExcelProperty(value = "出库数量")
    private BigDecimal orderQty;

    /**
     * 出库日期
     */
    @ApiModelProperty("出库日期")
	@ExcelProperty(value = "出库日期")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date shipDate;

    /**
     * 来源单据
     */
    @ApiModelProperty("来源单据")
	@ExcelProperty(value = "来源单据")
    private String sourceShipNotice;

    /**
     * 订单来源
     */
    @ApiModelProperty("订单来源")
	@ExcelProperty(value = "订单来源")
    private String dataSource;

    /**
     * 销售类型
     * 对应的枚举：GdnHeaderSaleTypeEnum
     */
    @ApiModelProperty("销售类型")
	@ExcelProperty(value = "销售类型", converter = GdnHeaderSaleTypeConverter.class)
    private Integer saleType;

    /**
     * 实际柜号
     */
    @ApiModelProperty("实际柜号")
	@ExcelProperty(value = "实际柜号")
    private String cntrNo;

    /**
     * 车牌号
     */
    @ApiModelProperty("车牌号")
	@ExcelProperty(value = "车牌号")
    private String vehicleNo;

    /**
     * 封条号
     */
    @ApiModelProperty("封条号")
	@ExcelProperty(value = "封条号")
    private String sealNo;

    /**
     * 柜型
     */
    @ApiModelProperty("柜型")
	@ExcelProperty(value = "柜型")
    private String cntrType;

    /**
     * 客户
     */
    @ApiModelProperty("客户")
	@ExcelProperty(value = "客户")
    private String customerName;

    /**
     * 业务员
     */
    @ApiModelProperty("业务员")
	@ExcelProperty(value = "业务员")
    private String followUp;

    /**
     * 出口国
     */
    @ApiModelProperty("出口国")
	@ExcelProperty(value = "出口国")
    private String exportCountry;

    /**
     * 发货港
     */
    @ApiModelProperty("发货港")
	@ExcelProperty(value = "发货港")
    private String shipPort;

    /**
     * 到货港
     */
    @ApiModelProperty("到货港")
	@ExcelProperty(value = "到货港")
    private String arrivePort;

    /**
     * 承运人
     */
    @ApiModelProperty("承运人")
	@ExcelProperty(value = "承运人")
    private String carrierName;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
	@ExcelProperty(value = "备注")
    private String comments;
    
    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
	@ExcelProperty(value = "创建人")
    private String createUser;
    
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
	@ExcelProperty(value = "创建时间")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date createTime;
    
    /**
     * 货主ID
     */
    @ApiModelProperty("货主ID")
    private Integer owner;
    
    
    
    
    //-----------------------------明细--------------------------//
    /**
     * 行号
     */
    @ApiModelProperty("行号")
    @ExcelProperty(value = "行号")
    private String gdnLineNo;

    /**
     * 组织
     */
    @ApiModelProperty("组织")
    @ExcelProperty(value = "组织")
    private String factory;

    /**
     * 销售订单
     */
    @ApiModelProperty("销售订单")
    @ExcelProperty(value = "销售订单")
    private String soNo;

    /**
     * 销售订单行号
     */
    @ApiModelProperty("销售订单行号")
    @ExcelProperty(value = "销售订单行号")
    private String soLineNo;

    /**
     * 参考销售订单号
     */
    @ApiModelProperty("参考销售订单号")
    @ExcelIgnore
    private String refSoNo;

    /**
     * 订单号
     */
    @ApiModelProperty("订单号")
    @ExcelProperty(value = "订单号")
    private String poNo;
    
    /**
     * 物料编码
     */
    @ApiModelProperty("物料编码")
    @ExcelProperty(value = "物料编码")
    private String skuCode;

    /**
     * 物料描述
     */
    @ApiModelProperty("物料描述")
    @ExcelProperty(value = "物料描述")
    private String descCn;

    /**
     * 仓库
     */
    @ApiModelProperty("仓库")
    @ExcelProperty(value = "仓库")
    private String whsName;

    /**
     * 批次号
     */
    @ApiModelProperty("批次号")
    @ExcelProperty(value = "批次号")
    private String lotno;

    /**
     * 计划数量
     */
    @ApiModelProperty("计划数量")
    @ExcelProperty(value = "计划数量")
    private BigDecimal gdnDtlPlanQty;

    /**
     * 订单数量
     */
    @ApiModelProperty("订单数量")
    @ExcelProperty(value = "订单数量")
    private BigDecimal gdnDtlOrderQty;

    /**
     * 拣货数量
     */
    @ApiModelProperty("拣货数量")
    @ExcelProperty(value = "拣货数量")
    private BigDecimal gdnDtlPickQty;

    /**
     * 发货数量
     */
    @ApiModelProperty("发货数量")
    @ExcelProperty(value = "发货数量")
    private BigDecimal gdnDtlShipQty;

    /**
     * 来源单号
     */
    @ApiModelProperty("来源单号")
    @ExcelProperty(value = "来源单号")
    private String sourceNo;

    /**
     * 出库日期
     */
    @ApiModelProperty("出库日期")
    @ExcelProperty(value = "出库日期")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date shipTime;

    /**
     * 业务部门
     */
    @ApiModelProperty("业务部门")
    @ExcelProperty(value = "业务部门")
    private String workCenter;

    /**
     * 成本中心
     */
    @ApiModelProperty("成本中心")
    @ExcelProperty(value = "成本中心")
    private String costCenter;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    @ExcelProperty(value = "备注")
    private String gdnDtlComments;

    /**
     * 关单时间
     */
    @ApiModelProperty("关单时间")
    @ExcelProperty(value = "关单时间")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date closeTime;

    /**
     * 明细状态
     */
    @ApiModelProperty("明细状态")
    @ExcelProperty(value = "明细状态", converter = GdnDtlStatusConverter.class)
    private Integer gdnDtlStatus;
}